﻿using Attributes;
using OR.Enumerador;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OR
{
    public class mPessoa : Modelo 
    {
        private Int32 indice;
        private Int16 empresa;
        private String nome;
        private String apelido;
        private String cnpj;
        private String cpf;
        private String ie;
        private String rg;
        private DateTime nascimento;
        private eTipoPessoa tipo;
        private String profissao;
        private eEstadoCivil estadoCivil;
        private String pai;
        private String mae;
        private eGenero sexo;
                
        public Int32 Indice
        {
            get
            {
                return this.indice; 
            }
            set
            {
                this.indice = value;
                this.OnPropertyChanged("Indice");
            }
        }
        [DisplayName("Nome Empresa")]
        public Int16 Empresa 
        {
            get
            {
                return this.empresa; 
            }
            set
            {
                this.empresa = value;
                this.OnPropertyChanged("Empresa");
            }
        }
        [DisplayName("Nome")]
        [Required(ErrorMessage = "Campo Obrigatório"), StringLength(80, ErrorMessage = "Campo deve possuir no máximo {1} caracter(s)")]
        public String Nome 
        {
            get
            {
                return this.nome;
            }
            set
            {
                this.nome = value;
                this.OnPropertyChanged("Nome");
            }
        }
        [DisplayName("Nome Fantasia")]
        [Required(ErrorMessage = "Campo Obrigatório"), StringLength(80, ErrorMessage = "Campo deve possuir no máximo {1} caracter(s)")]
        public String Apelido 
        {
            get
            { 
                return this.apelido; 
            }
            set
            {
                this.apelido = value;
                this.OnPropertyChanged("Apelido");
            }
        }
        [DisplayName("CNPJ")]
        [Required(ErrorMessage = "Campo Obrigatório")]
        [TaxIdValid]
        public String CNPJ
        {
            get
            {
                return this.cnpj;
            }
            set
            {
                this.cnpj = value;
                this.OnPropertyChanged("CNPJ");
            }
        }
        [DisplayName("CPF")]
        [TaxIdValid]
        public String CPF
        {
            get
            {
                return this.cpf;
            }
            set
            {
                this.cpf = value;
                this.OnPropertyChanged("CPF");
            }
        }
        [DisplayName("Inscrição Estadual")]
        public String IE 
        {
            get
            {
                return this.ie;
            }
            set
            {
                this.ie = value;
                this.OnPropertyChanged("IE");
            }
        }
        [DisplayName("RG")]
        public String RG 
        {
            get
            {
                return this.rg;
            }
            set
            {
                this.rg = value;
                this.OnPropertyChanged("RG");
            }
        }
        [DisplayName("Data Nascimento")]
        public DateTime Nascimento 
        {
            get
            {
                return this.nascimento;
            }
            set
            {
                this.nascimento = value;
                this.OnPropertyChanged("Nascimento");
            }
        }
        [DisplayName("Tipo Cadastro")]
        public eTipoPessoa Tipo 
        {
            get
            {
                return this.tipo;
            }
            set
            {
                this.tipo = value;
                this.OnPropertyChanged("Tipo");
            }
        }
        [DisplayName("Profissão")]
        public String Profissao 
        {
            get
            {
                return this.profissao;
            }
            set
            {
                this.profissao = value;
                this.OnPropertyChanged("Profissao");
            }
        }
        [DisplayName("Estado Civil")]
        public eEstadoCivil EstadoCivil 
        {
            get
            {
                return this.estadoCivil;
            }
            set
            {
                this.estadoCivil = value;
                this.OnPropertyChanged("EstadoCivil");
            }
        }
        [DisplayName("Nome do Pai")]
        public String Pai 
        {
            get
            {
                return this.pai;
            }
            set
            {
                this.pai = value;
                this.OnPropertyChanged("Pai");
            }
        }
        [DisplayName("Nome do Mãe")]
        public String Mae 
        {
            get
            {
                return this.mae;
            }
            set
            {
                this.mae = value;
                this.OnPropertyChanged("Mae");
            }
        }
        [DisplayName("Sexo")]
        public eGenero Sexo 
        {
            get
            {
                return this.sexo;
            }
            set
            {
                this.sexo = value;
                this.OnPropertyChanged("Sexo");
            }
        }
    }
}
